package com.ucode.model.hrm.form;

import com.ucode.model.hrm.enums.HrmThreeSignTypeEnum;
import com.ucode.tool.validator.InEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Schema(description = "人力资源管理系统 - 合同模板Form")
@Data
@EqualsAndHashCode
@ToString(callSuper = true)
public class HrmContractTplForm {

    /**
     * 模板名称
     */
    @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "模板名称不能为空")
    @Size(max = 100, message = "模板名称不能超过 100 个字符")
    private String tplName;

    /**
     * 合同名称(不能有任何特殊字符)
     */
    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "合同名称不能为空")
    @Size(max = 100, message = "合同名称不能超过 100 个字符")
    private String contentName;

    /**
     * 合同文件地址
     */
    @Schema(description = "合同文件", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "合同文件不能为空")
    @Size(max = 255, message = "合同文件不能超过 255 个字符")
    private String tplUrl;

    @Schema(description = "合同源文件名称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "合同源文件名称不能为空")
    @Size(max = 255, message = "合同源文件名称不能超过 255 个字符")
    private String sourceName;

    ///**
    // * 第三方合同模板ID
    // */
    //@Schema(description = "第三方合同模板ID", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotBlank(message = "第三方合同模板ID不能为空")
    //@Size(max = 100, message = "第三方合同模板ID不能超过 100 个字符")
    //private String threeTemplateId;
    /**
     * 第三方签署平台类型
     */
    @Schema(description = "第三方合同模板ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "第三方合同模板ID不能为空")
    @InEnum(value = HrmThreeSignTypeEnum.class)
    private Integer threeSignType;

    /**
     * 签署关键字（公司侧）
     */
    @Schema(description = "签署关键字（公司侧）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "签署关键字（公司侧）不能为空")
    @Size(max = 100, message = "签署关键字（公司侧）不能超过 100 个字符")
    private String signKeyword1;
    /**
     * 签署关键字策略（公司侧）
     */
    @Schema(description = "签署关键字策略（公司侧）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "签署关键字策略（公司侧）不能为空")
    @Size(max = 100, message = "签署关键字策略（公司侧）不能超过 100 个字符")
    private String keywordStrategy1;
    /**
     * 签署关键字（员工侧）
     */
    @Schema(description = "签署关键字（员工侧）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "签署关键字（员工侧）不能为空")
    @Size(max = 100, message = "签署关键字（员工侧）不能超过 100 个字符")
    private String signKeyword2;
    /**
     * 签署关键字策略（员工侧）
     */
    @Schema(description = "签署关键字策略（员工侧）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "签署关键字策略（员工侧）不能为空")
    @Size(max = 100, message = "签署关键字策略（员工侧）不能超过 100 个字符")
    private String keywordStrategy2;

    /**
     * 备注
     */
    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED)
    @Size(max = 255, message = "备注不能超过 255 个字符")
    private String remark;

}